Хозяин Миров, для начала прочитать весь список функций
или научится юзать поиск по функциям
ибо GetRandomInt(n,m)
где n начало промежутка из которого берутся числа а m конец
В общем во время сохранения файла я попробую продублирую весь код, во время загрузки файла я сначало выполню файл в котором чисто Preload("Код") чтобы его занести на компьютер клиента, а только потом начну выполнять Preload("\")\n <Код>\n//"). Надеюсь сработает. А про то что никто в этом не видит смысла, так часто говорят.
Получилось так что я допустил туже ошибку...
Может есть какая-нибудь нативка/функция которая будет синхронизировать информацию? Если нет, то скорее всего я зря пытаюсь.
Есть какая-нибудь статья про TriggerSyncReady и Start? xgm.guru/p/wc3/159609, тут обсуждается похожая ситуация.
В общем дождался друга чтоб протестить TriggerSyncStart и Ready, в итоге я поставил их перед функцией Preloader(сначало Start потом Ready) и всё десинк пропал.
Но это не помогло найти твои ресурсы. У тебя нет ни опубликованных, ни снятых с публикации ресурсов.
Счетчик ресурсов в профиле не меняли давно - сломаться это не могло.
Есть только записи в блоге, а это не листится в списках ресурсов.
Записи блогов работают как нужно - мы не оцениваем их качество, но и не продвигаем в индексе.
В связи с этим появился вопрос - а были ли у тебя ресурсы?
Я знаю, что был xgm.guru/p/wc3/new-rules-maps но автора публикации сменили на niken 31.12.2021
Не знаю, зачем, но уже не важно - ресурс больше не представляет ценности.
Всем спасибо, проблему решил за счет проверки на цвет/номер игрока как индекс в массиве переменных. Все работает как запланировано.
Вопрос вдогонку: как можно задавать сам индекс переменной-массива?)
З.Ы. Массивы конечно зло, но другого способа хранить инфо по одному спеллу, не используя множество переменных - пока не умею.
Pingvinromeo, проблема в том что ты фигню творишь
если спел применён в точку то точка есть
перемещение это 1 действие
за это время точка не исчезнет
короче пруфы того что не работает
Alexey103, а у меня работает, проверял. тут ошибка в названии переменной, скорее всего, зачем ты задал такое. Мб оно слишком длинное и через нижнее подчеркивание? и путь модель указывают в jass не через один обратный слэш "/", а через двойной слэш "//". Это на гуи один, на джаз два слэша
От контекста зависит, например на текущем патче я бы сделал так...
При создании заносим юнит в переменную, юнит создаётся с москитом
Далее юнита можно всегда выбирать триггерно
Если надо снова начать выделять юнита, можно ловить клик мыши рядом с юнитом....
Если любой патч и нодо чтобы враг был невыделяем, например типа способность, невыделяемый и нельзя навести... например сларк в ульте, срабатывают только скилы по площади, есть 1 старый баг по возвращению выделения после москита, я его не особо помню но на форуме 3жды упоминался (мне не надо и я не запомнил)
Исходные данные: юнит не выделяем и он москит, нужно вернуть выделение
В любом случае приказ ПКМ - это приказ smart, то есть попробуй такой триггер:
Событие - Generic unit Отдал приказ цель-точка
Условие - Unit-type of (Triggering unit) равно Твой_городской_защитник и (Issued order) равно smart
Действие - Pause (Triggering unit), Issue order with no target Стоп (Triggering unit) и Unpause (Triggering unit)
Кнопки некоторые обновил, но это всё временно. По остальному - поток мыслей, это не в вопросах должно быть. Нужно как-то организовываться и приходить к концепту.
Для новичков в очередной раз рекомендую WC3Pather (есть в инвентаре юного модмейкера), главное знать, что на что менять. Или то, что подсказал alexprey.
100% будет работать, если заменить стандартные текстуры деревьев, а в самих моделях вместо пути к текстуре указать соответствующий Replaceable ID. (Если порченные версии тоже заменить под новую модель, то ещё и порча будет корректно работать =)
Дальше пришла в голову другая идея. Думаю, можно сделать с помощью ремонта зданий Альянса: на месте смерти героя создаётся здание с моделью креста со здоровьем 1/100 ед., а союзные герои ремонтируя крест будут повышать её здоровье, получается некая иллюзия прогресс бара. И если спрятать способность ремонта с помощью функции HideAbilityButton( ) из мемхака, то будет ли она срабатывать при нажатии на ПКМ? Также, как отловить момент полного ремонта здания? С помощью таймера проверять процент здоровья каждые доли секунды?
раскрыть
scope HeroRevive initializer Initialization
struct herorevive
private unit dyingUnit
private unit reincarnate
private real life
private thistype prev
private thistype next
public static constant trigger trig = CreateTrigger( )
public static constant timer period = CreateTimer( )
private static method iterate takes nothing returns nothing
local thistype this = thistype( 0 ).next
loop
exitwhen ( this == 0 )
if ( GetWidgetLife( this.reincarnate ) > this.life ) then
set this.life = GetWidgetLife( this.reincarnate )
elseif ( GetWidgetLife( this.reincarnate ) >= GetUnitState( this.reincarnate, UNIT_STATE_MAX_LIFE ) ) then
call ReviveHero( this.dyingUnit, GetUnitX( this.dyingUnit ), GetUnitY( this.dyingUnit ), true )
call RemoveUnit( this.reincarnate )
set this.reincarnate = null
set this.life = 0.0
set this.prev.next = this.next
set this.next.prev = this.prev
if ( thistype( 0 ).next == 0 ) then
call PauseTimer( thistype.period )
endif
call thistype.deallocate( this )
elseif ( GetWidgetLife( this.reincarnate ) <= this.life ) then
set this.life = 1.0
call SetWidgetLife( this.reincarnate, this.life )
endif
set this = this.next
endloop
endmethod
public static method actions takes nothing returns nothing
local thistype this = thistype.allocate( )
set this.next = 0
set this.prev = thistype( 0 ).prev
set this.next.prev = this
set this.prev.next = this
set this.dyingUnit = GetDyingUnit( )
set this.reincarnate = CreateUnit( GetOwningPlayer( this.dyingUnit ), 'h003', GetUnitX( this.dyingUnit ), GetUnitY( this.dyingUnit ), 0.0 )
set this.life = 1.0
call SetUnitPathing( this.reincarnate, false )
call SetWidgetLife( this.reincarnate, this.life )
if ( this.prev == 0 ) then
call TimerStart( thistype.period, 0.10, true, function thistype.iterate )
endif
endmethod
public static constant method conditions takes nothing returns boolean
return IsUnitType( GetDyingUnit( ), UNIT_TYPE_HERO )
endmethod
endstruct
public function Initialization takes nothing returns nothing
call TriggerRegisterPlayerUnitEvent( herorevive.trig, Player( 1 ), EVENT_PLAYER_UNIT_DEATH, null )
call TriggerRegisterPlayerUnitEvent( herorevive.trig, Player( 2 ), EVENT_PLAYER_UNIT_DEATH, null )
call TriggerRegisterPlayerUnitEvent( herorevive.trig, Player( 3 ), EVENT_PLAYER_UNIT_DEATH, null )
call TriggerRegisterPlayerUnitEvent( herorevive.trig, Player( 4 ), EVENT_PLAYER_UNIT_DEATH, null )
call TriggerAddCondition( herorevive.trig, Condition( function herorevive.conditions ) )
call TriggerAddAction( herorevive.trig, function herorevive.actions )
endfunction
endscope
Вот только если спрятать кнопку через HideAbilityButton( ), то способность ремонта зданий исчезает и не работает через ПКМ.
Кароч
есть инфа
что если хочешь стандартный скилл с небольшим изменением
но не можешь отловить его цели
то можно тупо ловить урон
при этом кастуя скилл с даммика
и вылавливать урон только от даммика
да?
Но это вариант для тех кому лень...
а тебе я так вижу не лень
Ответ на мой вопрос: используйте способность "Канал", как основу для ваших способностей. Потому что AI никогда не использует способности, которые основаны на способности "Канал" сам.
В редакторе объектов поищи поля, в которых написан приказ (скорее всего, там в конце написано "on" и "off" ) и триггерно отдай приказ, указанный в поле.
Я сравнил стандартный и свой звук. Обнаружил, что у меня 2 канала, у стандартного 1. Я перковертировал все свои звуки... Стало лучше, но часть звуков все равно не работает(
Такое бывает, и не только со звуками, а с любым импортом - это баг редактора. На всякий случай лучше делать резервные копии файлов и карты. Например, у меня весь импорт с проекта хранится в отдельной папке на компьютере, и старые версии карт все тоже не удаляю.
Вроде бы удалось решить проблему самостоятельно. Ошибка действительно была элементарной - идентификатор не устраивал введённый туда заглавный символ, а я не знал об этом. Простите за беспокойство.
dave_wwid, на событии Юнит Атакован возможны баги и утечки. Не лучше ли на событии получает урон?
Я думаю, что вы правы...
Yuru13, вам следует выбрать событие Specific Unit Event, а в нём Получает урон (Damage taken), и создать глобальную переменную для критующего. Далее следует конвертировать триггер в текст и заменить место под Юнита в событии на некую глобальную переменную(Таковую создать через другой триггер типа Событие: Юнит атакован Условие: Атакующий = глобальной переменной атакующий Действие: присвоить свободной глобальной переменной значение атакованный юнит). Также вам пригодится Dmage Source (пишется кое-где вместо triggering unit). Damage source - это тот, кто нанёс урон. В условии пишем, чтобы Damage source соответствовал переменной.(Ну а в переменную его можно засунуть при инициализации карты, или вовсе не сувать, если он будет на карте изначально). Действия же добавляете ваши.
P.S. Конвертированием триггера лучше заняться после добавленных действий. И помните, что Нужно как минимум 2 глобальные переменные типа юнит и 2 триггера.
Недостатки способа
Данный способ будет работать только если у вас на карте одни юнит, имеющий криты с кулдауном, и если этот юнит атакует за раз одну цель... В противном случае придётся создавть локальные переменные вместо глобальных, и в одном триггере. Или же созданные переменные отметить как массивы и создать счётчик для этих переменных (Но и в таком случае не без багов и т.п.)
Блин, так я пытался раньше сделать через ульту тинкера - превращение в робота или что-то такое. Но суть в том, что способность, которая должна быть у оригинала, остаётся у нового, а старая не добавляется. Делая через триггер добавление способности - она не считается как старая, то есть возможно прокачать её за скилл-поинты.
Ну и когда морф обратно, новая способность удаляется, старая - не добавляется. Через триггеры я пытался делать, но это ооочень сильно глючит и надо очень долго править. Собственно поэтому я и пришёл к мгновенной замене героя на другого, триггерно добавляя нужные способности. т.к у нового героя другие базовые способности, то и получается все без багов. Кроме, собственного, указанного в вопросе.
Более того, пытался делать через пустышку - но не смог сделать отсутствие иконки, а это все портит.
Проблема решена - нашел вопрос со скрытие иконки и ответ на него
Suite, вот только придётся каждый раз вручную юзать этот спелл SсRealm, ты вопрос прочти прежде чем писать всякий бред
нормальным способом момент добычи отловить нельзя
недавно кидали костыль позволяющий отловить удар по дереву но он тут не особо поможет
ибо анимации будут перебивать друг друга
в общем как и сказал Suite меняй это в самой модели
похоже более всего на мусор, попадающий в память откуда-то извне. Обычно пропущенная строка автокаста такой фигней страдает. Нельзя точно сказать, нужно менять поля и смотреть. К счастью, описания можно менять и локально, не перепаковывая карту
Я тоже помню эту кампанию, но она далеко не официальная) В мое детство (и, видимо, в твое тоже) продавалось очень много дисков, с якобы "официальными" доп. кампаниями и с логотипом близзардов. Эти моды даже устанавливались отдельно от оригинальной игры. Одна из них "расхитители гробниц", может быть она. У меня даже диск остался:
Скорее всего никак. Либо триггерно всё делать.
Что там в абилке есть: уничтожение трупа, создание юнита, запись юнита за создателем, и ведение счётчика.
Можно вставить обычный призыв, но тут минус устранение трупов (хотя можно триггерно удалять).
Можно кастовать пустышку с предмета, а с дамми юзать оригинальную абилку (опять же - каждый раз новый дамми или записывать одно и того же на каждого героя? надо будет что-то делать...)
Можно кастовать пустышку с предмета, а герою подбрасывать абилку (с приказом?) и/или вообще попробовать руну... что будет с счётчиком? хз, надо чекать (и будет ли вообще эта абилка работать в руне)
Можно засунуть её в спеллбук... Дёшево и сердито. Будет работать.
Злые духи (у орды)/ Москиты (у нежити) 'AOls'/'AUls' - При активации заклинания от кастера вылетают духи, которые высасывают у врагов хп. И отдают добытые хп кастеру, тем самым пополняя ему здоровье. Это особый призыв духов, но имеет некую особенность, событие триггеров "юнит - вызывает боевую единицу" не считает, что этих духов призвали. Словить можно по событию "юнит входит в регион ... ". Уход из мира живых (исчезновение) можно отследить с помощью "юнит умирает". Есть у духов способность "москиты" 'Aloc' (надеюсь знаете что это такое? это такая способность, которая скрывает полоску здоровья, делает юнитов невыделяемыми, позволяет проходить сквозь объекты. Часто эта способность используется dummy-unit. Имеет недостаток, на такого юнита нельзя натравить мышкой. Кстати, способность москиты 'Aloc' и способности 'AOls'/'AUls' тесно связаны между собой. Если удалить у призываемой саранчи способность "москиты" 'Aloc', то духи-саранчи при вызове перестают кружится, стоят на месте, короче, ничего не хотят делать. Давайте разберемся в характеристиках абилки, как она работает: "Число членов стаи" - максимум вызванных москитов, "Максимум членов стаи на цель" - максимальное возможное количество москитов, сфокусированных на одном юните. "Фактор возвращенного урона" - сколько процентов (%) урона, нанесенным москитом, превращается в здоровье, затем это здоровье отдаст кастеру при возврате к нему. "Порог возвращенного урона" - максимальное число похищенного здоровья одним москитом, необходимое для возврата к кастеру и передачи герою добытого здоровья. Если порог больше или равно кол-во похищенного хп, то москит отдаст здоровье кастеру. Москит может похитить здоровье у одной цели, если будет мало, полетит к следующей цели, и так будет накапливать похищенное здоровье. "Интервал отпускания боевой единицы" - единицы измерения (в секундах) - задержка между вызовом каждой новой саранчи. Чтобы было понятно: при вызыве появилась первая саранча, через 0.2 секунды появилась вторая, через 0.2 сек третья - и так пока все 20 не появятся. (по умолчанию количество вызванных единиц: 20, по умолчанию: 0.2 сек = >> 20 * 0.2 = 4 секунды, прежде чем последний москит появится, можно проверить дебагом). "Область воздействия" - радиус действия саранчи. показывает, как далеко саранча может отойти от заклинателя, она мгновенно возвращается, если расстояние между ее положением и заклинателем больше заданного значения. По поводу урона - урон наносят сами вызванные юниты, и весь наносимый ими урон является физическим уроном (наносится с руки), так как понижается защитой. Не сбивает текущий приказ кастера, кастер останавливается, чтобы юзнуть скилл, а потом продолжает делать дальше дела
Почему бы не сделать привязку к классу героя: танки не будут получать очки за исцеление, дд-шеры за полученный урон, а лекари за нанесенный урон. Тем самым, стату можно будет набивать исключительно выполняя свою роль.
Alexey103, для какого проекта тебе нужно усилить ИИ? Ведь читы действуют только в одиночных картах, как уже отметили. И ещё решил протестировать триггерную выдачу ресурсов двух ИИ, один не тратил, а другой вовсю использовал, так что может попробовать другого игрока поставить, хотя не понимаю, как это связано. Ещё есть вариант дать ресурсы через руны, делаешь с нужным количеством монетку и дерево, даёшь главному зданию геройский инвентарь, вручаешь монетку и дерево, убираешь у здания инвентарь.
Сейчас дошло, почему игрок не тратил ресурсы, запускал карту из редактора, за него просто ИИ отсутствовал.
Вопрос такой, как сделать апгрейд для Проклятого рудника (нежити) для увеличение добычи золота, не только на существующих рудниках, но и на всех построенных после апгредйа?
Нужно создать нестандартный, проклятый рудник и дать ему способность (Abgm) «проклятие рудника», выставив, к примеру, +20 золота при выработке. А стандартному, проклятому руднику добавить улучшения до нестандартного, и после исследования технологии, либо аналога, выделить всех рабочих игрока на карте и заменить их на других, которые могут строить улучшенный. Не забудь исправить места строительства рабочих, если они есть.
Вот что я тебе скажу. Иногда проще начать с нуля, чем разгребать ошибки. Просто создай новую кампанию , перекопируй старые триггеры. Всяко быстрее выйдет, чем несколько дней разбираться, да и качественнее.
Ваш ресурс не прошёл автомодерацию. Пожалуйста, внесите исправления или ожидайте проверки модератором.
Причина
Должен присутствовать файл одного из типов: w3m, w3x, scm, scx, sc2map, sc2ma, pud, w3n, sc2mod, zip, 7z, rar, tar, gz, apk, gzip, jar, lzip, tgz, tbz2, bz2, zipx, zz, dmg, ipg, z, iso
Your resource has not passed automoderation. Please make corrections or wait for the moderator to check.
Reason
There must be a file of one of the following types: w3m, w3x, scm, scx, sc2map, sc2ma, pud, w3n, sc2mod, zip, 7z, rar, tar, gz, apk, gzip, jar, lzip, tgz, tbz2, bz2, zipx, zz, dmg, ipg, z, iso
Я сам разобрался с проблемой. Конечно тут две новые появились, но на них забью уже:
ИИ не нравился герой, из-за него вообще никто не нанимался.
ИИ посчитал, что улучшив главное здание, он лишается главного здания, а значит нужно его снова строить. То есть, например, улучшив ратушу до крепости, он считает, что ратуши больше нет и необходимо построить ещё одну. Потом он крепость улучшит до замка, посчитает, что разрушили крепость, улучшит до крепости ратушу№2, снова потеряет ратушу и построит уже третью.
Зверобойщик, во-первых, триггеры варика по сути представляют собой упрощённое программирование, ими делают свой движок игры, если нужно, например, симулятор гонок, шутера, РПГ с видом от третьего лица, даже авиасимулятор и прочее. Если ты в них не разбираешься, либо разбираешься очень плохо, то более половины своих идей не сможешь реализовать. Говорю по жизненному опыту, в детстве научился в редакторе карт к Героям 3 делать полноценные карты и кампании без триггеров, думал, что и к остальным играм так легко смогу что-то делать, но не тут-то было!
Во-вторых, возможность носить несколько видов оружия у юнита ты преподносишь как нечто обязательное, но если для людей и орков это ещё будет нормально, то вурдалаки нежити сражаются только своими когтями, а хрупкие лучницы ночных эльфов не будут в руки тяжеленные молоты брать, чтобы померяться силой с мужиками в ближнем бою. Помимо отсутствия в войнах древности летающих юнитов, есть ли там водоплавающие? Это всё проблемы, которые ты хочешь на потом отложить, но это те проблемы, которые нужно сразу как-то решить, чтобы понять урезанность своей идеи, либо даже полную невозможность осуществления.
В-третьих, почему-то только четыре картинки отображается, судя по которым, способности в войнах древности в целом имеют свои аналоги в варике, но опять же не те, которые выше упомянул. А упомянул не случайные способности, а такие, которые затруднительно было бы реализовать, если в игре нет аналогов. Как реализуешь поднятие скелетов из трупа, например? Оно обязательно нужно - это ключевая особенность нежити.
В-четвёртых, под устройством файлов подразумевал, что ты умеешь открывать архивы игры, форматы изображений и прочих файлов, а также знаешь, почему там что-то сделано так, а не иначе. Например, в варике текстуры почвы представляют собой изображение 256х512 или 256х256 в зависимости от того, будет ли текстура накладываться сверху на другие при соприкосновении, либо всегда будет снизу. Если будет накладываться, то левая часть изображения поделена на зоны 4х4, в каждой из которых указан вариант для разных вариантов соприкосновения текстур, в правой части тоже зоны 4х4, где каждый кусочек полноценной текстуры земли имеет небольшие изменения, чтобы в редакторе почва получалась разнообразной (где-то камень, где-то кочка, где-то полевые цветы), а не наскучивала неестественностью игроку. То есть нельзя просто любое изображение туда поставить, в игре будет смотреться шахматной доской, а не единым пространством.
В-пятых, если почитаешь про этот проект, то изначально Armies of Azeroth не делались под Starcraft 2, а были обновлением моделек для варика под названием Reborn или Resurrection, запамятовал точное название. Мотивы их перехода на другой движок мне неизвестны, но вроде как это было одним из условий объединения двух или более проектов (вроде бы трёх), которые по отдельности вряд ли бы были доведены до конца. Это к тому, что идеей создания новых моделек всерьёз горело множество талантливых людей, и они смогли довести дело до конца, лишь скооперировавшись на международном уровне. А у тебя единомышленников, насколько понимаю, нет?
В-шестых, почти не играю, не хочется касаться нового, сейчас акцент в играх на графику и мультиплеер смещён, либо казуальщину, а мне нравится наслаждаться глубоким сюжетом в одиночку) P. S. Даже не трать время и энергию на уговоры.
В-седьмых, переносные или подвозные лестницы, тут не столь принципиально. В зависимости от модели лестницы будет своя реализация. В твоём случае потребуется модель переносчика лестницы с анимацией, как он её ставит. Потом лестница у него исчезает и сразу появляется на её месте декорация лестницы из категории Мосты и подъёмы. Тут долго всё это описывать, скажу только, что поднимается по ней юнит гладко, проверял много раз)
» WarCraft 3 / Как сделать простой рандом?
» WarCraft 3 / Использование файлов preload
» Администрация XGM / Не отображаются ресурсы
» WarCraft 3 / Триггерное заклинание
» WarCraft 3 / Запрет выбора юнита
» WarCraft 3 / Авангард Нежити (кооп версия на 2)
» Администрация XGM / поиск по сайту
» WarCraft 3 / Путь текстуры
» WarCraft 3 / Как отловить цвет
» WarCraft 3 / Высота молнии
» WarCraft 3 / В какие кампании поиграть?
» Администрация XGM / Режимы публикации ресурсов
» WarCraft 3 / Автоприменение способности
» WarCraft 3 / Проблемы со звуком.
» Администрация XGM / Лента новостей пропала
» WarCraft 3 / Замена способности через триггер
» WarCraft 3 / Logarim warrior
» WarCraft 3 / Повелитель Могил
» WarCraft 3 / улучшение добычи золота виспами
» WarCraft 3 / А как кампанию сделать?
» WarCraft 3 / Warcraft III: Will of the Legion (Временно закрыто)
» WarCraft 3 / Строительство зданий в редакторе